这个问题在这里已经有了答案:关闭13年前。PossibleDuplicate:subprocesswithtimeout在Python中执行以下操作的最简单方法是什么:运行外部进程捕获字符串中的标准输出、标准错误和退出状态设置超时。我想要这样的东西:importproctry:status,stdout,stderr=proc.run(["ls","-l"],timeout=10)exceptproc.Timeout:print"failed"
假设我的django/flask应用程序从API中提取信息,我如何测试连接异常是否被正确捕获和处理?例如,这里有一个调用API的函数:importrequestsdefcall_the_api():url='http://httpbin.org/get'try:req=requests.get(url)ifreq.json().get('errors'):logger.warn("APIerrorresponse")return{'request_error':'api_error_response'}exceptrequests.exceptions.ConnectionError:
我正在测试一个可能会死锁的异步函数。我尝试添加一个fixture来限制函数在引发故障之前只运行5秒,但到目前为止它还没有奏效。设置:pipenv--python==3.6pipenvinstallpytest==4.4.1pipenvinstallpytest-asyncio==0.10.0代码:importasyncioimportpytest@pytest.fixturedefmy_fixture():#attempttostartatimerthatwillstopthetestsomehowasyncio.ensure_future(time_limit())yield'egg
我几乎已经解决了这个问题,但我认为我需要朝着正确的方向插入。我想每五秒执行一次操作,直到已经过去了一定的时间,或者用户中断了它(在这种情况下它完成了循环的迭代在完成之前)。importtimeimportthreadingdefdo_something():T0=time.clock()while(time.clock()-T0)我不知道如何让最后一行工作。在循环内使用raw_input()将阻塞,直到用户点击回车,无论线程是否完成其工作。是否有另一个模块可以满足我的要求?编辑:我使用的是WindowsXP。 最佳答案 您可以使用t
这是我正在尝试做的事情,大多数时候我都成功了:基本上我是在一个网站上登录,然后等待一个类出现在源代码中,然后处理源代码。我得到的异常:Traceback(mostrecentcalllast):File"foo.py",line495,inreport(login,password)File"foo.py",line430,inreportdata=bar(login,password)File"foo.py",line113,inui.WebDriverWait(browser,10).until(lambdabrowser:browser.find_elements_by_cl
当使用SQLAlchemy针对MySQL数据库运行时,从客户端控制超时的正确方法是什么?connect_timeoutURL参数似乎不够。我更感兴趣的是当运行数据库的机器突然从网络中消失时会发生什么。我不担心查询本身会花费太长时间。如果somehost在while期间不可用,则以下脚本会执行您期望的操作(即,大约一秒后超时)曾经达到循环。但是,如果somehost在while循环期间出现故障(例如,尝试在循环开始后拔掉它的网络电缆),那么超时似乎至少需要18秒。是否缺少某些其他设置或参数?wait_timeoutsession变量不起作用并不奇怪,因为我认为这是一个服务器端变量。但我把
我有一个要使用多处理修改的元素列表。问题是对于某些特定输入(在尝试之前无法观察到),my函数的一部分会停止。我用下面的代码从概念上展示了这一点,其中函数sometimes_stalling_processing()偶尔会无限期地停止。为了说明这一点,我正在使用网络抓取工具处理一堆链接,其中一些链接即使在请求模块中使用超时也会停止。我尝试过不同的方法(例如使用eventlet),但得出的结论是在多处理级别处理它可能更容易。defstable_processing(obs):...returnprocessed_obsdefsometimes_stalling_processing(obs
我正在尝试对pythonMySQLDB中的查询实现时间限制。我有一种情况,我无法控制查询,但需要确保它们不会超过设定的时间限制。我试过使用signal.SIGALRM来中断执行调用,但这似乎不起作用。信号被发送,但直到执行调用完成后才被捕获。我写了一个测试用例来证明这个行为:#!/usr/local/bin/python2.6importtimeimportsignalfromsomewhereimportget_dbcclassTimeout(Exception):"""TimeExceded"""def_alarm_handler(*args):raiseTimeoutdbc=ge
我有一个Python程序,它在后台运行了数周,并且每隔一段时间就进行一次数据库查询。为此,我正在使用ORMpeewee(版本2.2.1)。我正在使用MySQL作为后端。最近我在访问数据库时遇到了一个反复出现的问题,通常是在运行程序几天之后。peewee引发的错误是peewee.OperationalError:(2006,'MySQLserverhasgoneaway')回溯在peewee中很深。我把它贴在这里,但由于我的virtualenv使文件名太长,我正在缩短它们:File".../local/lib/python2.7/site-packages/peewee.py",line
我正在循环下载大量文件,其中包含以下代码:try:urllib.urlretrieve(url2download,destination_on_local_filesystem)exceptKeyboardInterrupt:breakexcept:print"Timed-outorgotsomeotherexception:"+url2download如果连接刚刚启动时服务器在URLurl2download上超时,则最后一个异常会得到正确处理。但是有时服务器响应了,开始下载了,但是服务器太慢了,一个文件都要几个小时,最后返回的是这样的:EnterusernameforClientsO